﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Drawing;

namespace Siav
{
    public partial class frmPedidosEmProducao : Form
    {
        public frmPedidosEmProducao()
        {
            InitializeComponent();
        }

        //DEUS É MARAVILHOSO
        public int CodigoPedido;
        public string Ordem;

        SiavEntities Entidades = new SiavEntities();
        //private IOrderedEnumerable<PedidoCabeca> Juncao;
        private IEnumerable<PedidoCabeca> Producao;
        private void CarregaPedidos(string pParametro)
        {
            if (cboOrdem.Text == "Nº de Pedido")
            {
                // Ordem = "pe.CodigoPedido";
            }
            if (cboOrdem.Text == "")
            {
                //Ordem = "pe.DataHoraPedido";
            }
            lstPedidosProducao.Items.Clear();
            var pedidos = (from pe in Entidades.PedidoCabeca
                           where pe.Clientes.NomeFantasia.Contains(pParametro) || pe.Clientes.RazaoSocial.Contains(pParametro)
                           //orderby Ordem
                           select pe).ToList();
            Producao = pedidos.Where(p => p.Status == "P");
            //switch (cboOrdem.Text)
            // {
            //    case "Nº de Pedido":
            //         Producao.OrderBy(p => p.CodigoPedido);
            ////         break;
            //    case "Data de Compra":
            //         Producao.OrderBy(p => p.DataHoraPedido);
            //         break;
            // }

            if (cboOrdem.Text == "Nº de Pedido")
            {
                Producao = Producao.OrderBy(p => p.CodigoPedido);
            }
            if (cboOrdem.Text == "Data de Entrega")
            {
                Producao = Producao.OrderBy(p => p.DataEntrega);
            }
            foreach (PedidoCabeca ped in Producao)
            {
            
                ListViewItem item = new ListViewItem();
                if (ped.DataEntrega < DateTime.Now)
                {
                    item.BackColor = Color.Red;
                    item.ForeColor = Color.White;
                }
                if (ped.DataEntrega.ToShortDateString() == DateTime.Now.ToShortDateString())
                {
                    item.BackColor = Color.Yellow;
                    item.ForeColor = Color.Black;
                }
                item.Text = ped.CodigoPedido.ToString();
                item.SubItems.Add(ped.Clientes.RazaoSocial);
                item.SubItems.Add(ped.DataHoraPedido.ToShortDateString());
                item.SubItems.Add(ped.DataEntrega.ToShortDateString());
                lstPedidosProducao.Items.Add(item);

            }
        }
        private void frmPedidosEmProducao_Load(object sender, EventArgs e)
        {
            cboOrdem.SelectedItem = "Data de Entrega";
            CarregaPedidos(txtFiltro.Text);
            
        }

        private void btnBaixar_Click(object sender, EventArgs e)
        {
            try
            {
                frmBaixaItensPedidos BaixaItens = new frmBaixaItensPedidos();
                BaixaItens.txtNumeroPedido.Text = lstPedidosProducao.SelectedItems[0].Text;
                BaixaItens.btnCarregarPedido_Click(sender, e);
                BaixaItens.ShowDialog();
                CarregaPedidos(txtFiltro.Text);
            }
            catch
            {
                MessageBox.Show("Primeiro selecione o pedido na lista", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnImprimirFichaPedido_Click(object sender, EventArgs e)
        {
            try
            {
                CodigoPedido = int.Parse(lstPedidosProducao.SelectedItems[0].Text);
                frmFichaPedido ficha = new frmFichaPedido();
                ficha.CodigoPedido = CodigoPedido;
                ficha.ShowDialog();
                ficha.Dispose();
            }
            catch
            {
                MessageBox.Show("Primeiro selecione o pedido na lista", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //MessageBox.Show(ex.Message.ToString());
            }
        }

        private void btnImprimirRelatorio_Click(object sender, EventArgs e)
        {
            frmImprimePedidosEmProducao RelPedidos = new frmImprimePedidosEmProducao();
            RelPedidos.ShowDialog();
            
        }

        private void txtFiltro_TextChanged(object sender, EventArgs e)
        {
            CarregaPedidos(txtFiltro.Text);
        }

        private void cboOrdem_SelectedIndexChanged(object sender, EventArgs e)
        {
            CarregaPedidos(txtFiltro.Text);
        }

        private void lstPedidosProducao_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            try
            {
                string CodigoSelecionado = lstPedidosProducao.SelectedItems[0].Text;
                frmPedido PedidosCliente = new frmPedido();
                PedidosCliente.txtCdPedido.Text = CodigoSelecionado;
                PedidosCliente.btnCarregarPedido_Click(sender, e);
                PedidosCliente.ShowDialog();
            }
            catch
            {

            }
        }



    }
}
